﻿using DroneLib.Communication;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using static MAVLink;

namespace DroneLib.Vehicles
{
    public class PX4 : Plane
    {

        internal readonly static Dictionary<PX4_CUSTOM_MAIN_MODE, string> _ModeStrings = new Dictionary<PX4_CUSTOM_MAIN_MODE, string>()
        {
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_ACRO,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_ALTCTL,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_AUTO,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_MANUAL,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_OFFBOARD,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_POSCTL,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_RATTITUDE,"特技" },
            {PX4_CUSTOM_MAIN_MODE.PX4_CUSTOM_MAIN_MODE_STABILIZED,"特技" },
        };





        internal PX4(byte sysId, MavStream link, MAV_TYPE type)
             : base(sysId, link)
        {
            Type = type;
        }

        public PX4()
            : base(0, null)
        {

        }

        public override bool IsAutoMode => throw new NotImplementedException();

        public override bool IsRtlMode => throw new NotImplementedException();

        public override bool IsAutoTuneMode => throw new NotImplementedException();

        public override bool IsManualMode => throw new NotImplementedException();

        public override async Task<bool> Auto()
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> AutoTune()
        {
            throw new NotImplementedException();
        }

        public override string GetModeName(uint modeCode)
        {
            throw new NotImplementedException();
        }

        public override string[] GetModeNames()
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> Land()
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> Loiter()
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> ReturnToLaunch()
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> SetMode(string modeName)
        {
            throw new NotImplementedException();
        }

        protected override uint TranslateModeString(string mode)
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> GotoLatLng(float lat, float lng, float alt, bool ignoreYaw, MAV_FRAME frame = MAV_FRAME.GLOBAL_RELATIVE_ALT_INT)
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> GotoXY(float x, float y, float z, bool ignoreYaw = true)
        {
            throw new NotImplementedException();
        }

        public override async Task<bool> SetYaw(float yaw)
        {
            throw new NotImplementedException();
        }
    }
}
